File: xil_interface.c

    1   /*
    2    * File: xil_interface.c
    3    *
    4    * SIL generated interface for code: "Autopilot"
    5    *
    6    */
    7   
    8   #include "xil_interface.h"
    9   #include "Autopilot.h"
   10   /* Functions with a C call interface */
   11   #ifdef __cplusplus
   12   extern "C" {
   13   #endif
   14   #include "xil_data_stream.h"
   15   #ifdef __cplusplus
   16   }
   17   #endif
   18   
   19   /* interface data */
   20   slBus1 AirData;
   21   
   22   /* interface data */
   23   slBus2 Inertial;
   24   
   25   /* interface data */
   26   boolean_T APEng;
   27   
   28   /* interface data */
   29   boolean_T HDGMode;
   30   
   31   /* interface data */
   32   boolean_T ALTMode;
   33   
   34   /* interface data */
   35   real_T HDGRef;
   36   
   37   /* interface data */
   38   real_T TurnKnob;
   39   
   40   /* interface data */
   41   real_T ALTRef;
   42   
   43   /* interface data */
   44   real_T PitchWheel;
   45   
   46   /* interface data */
   47   real_T AileronCmd;
   48   
   49   /* interface data */
   50   real_T ElevatorCmd;
   51   
   52   /* interface data */
   53   real_T RudderCmd;
   54   
   55   /* interface data */
   56   rtDW_Autopilot localDW;
   57   
   58   static XILIOData xil_fcnid0_task1_u[19];
   59   
   60   static XILIOData xil_fcnid0_task1_y[4];
   61   
   62   static XILIOData xil_fcnid0_init_y[4];
   63   
   64   
   65   /* In-the-Loop Interface functions - see xil_interface.h */
   66   
   67   XIL_INTERFACE_ERROR_CODE xilProcessParams(uint32_T xilFcnId) {
   68       /* Single In-the-Loop Component */
   69       if (xilFcnId != 0) {
   70          return XIL_INTERFACE_UNKNOWN_FCNID;
   71       }
   72       return XIL_INTERFACE_SUCCESS;
   73   }
   74   
   75   XIL_INTERFACE_ERROR_CODE xilGetDataTypeInfo(void) {
   76       {
   77           /* send response id code */
   78           MemUnit_T memUnitData = XIL_RESPONSE_TYPE_SIZE;
   79           if (xilWriteData(&memUnitData, sizeof(memUnitData)) != XIL_DATA_STREAM_SUCCESS) {
   80               return XIL_INTERFACE_COMMS_FAILURE;
   81           }
   82           /* send type id */
   83           memUnitData = 0;
   84           if (xilWriteData(&memUnitData, sizeof(memUnitData)) != XIL_DATA_STREAM_SUCCESS) {
   85               return XIL_INTERFACE_COMMS_FAILURE;
   86           }
   87           /* PIL_DOUBLE_SIZE should only be already defined for MathWorks testing */
   88           #ifndef PIL_DOUBLE_SIZE
   89               #define PIL_DOUBLE_SIZE sizeof(double)
   90           #endif
   91           /* send size in bytes */
   92           memUnitData = (MemUnit_T) PIL_DOUBLE_SIZE;
   93           #ifndef HOST_WORD_ADDRESSABLE_TESTING
   94           /* convert MemUnits to bytes */
   95           memUnitData *= MEM_UNIT_BYTES;
   96           #endif
   97           if (xilWriteData(&memUnitData, sizeof(memUnitData)) != XIL_DATA_STREAM_SUCCESS) {
   98               return XIL_INTERFACE_COMMS_FAILURE;
   99           }
  100       }
  101       return XIL_INTERFACE_SUCCESS;
  102   }
  103   
  104   XIL_INTERFACE_ERROR_CODE xilInitialize(uint32_T xilFcnId) {
  105       XIL_INTERFACE_ERROR_CODE errorCode = XIL_INTERFACE_SUCCESS;
  106       /* initialize output storage owned by In-the-Loop */
  107       {
  108           AileronCmd = 0;
  109       }
  110       {
  111           ElevatorCmd = 0;
  112       }
  113       {
  114           RudderCmd = 0;
  115       }
  116       /* Single In-the-Loop Component */
  117       if (xilFcnId == 0) {
  118           Autopilot_initialize(&(localDW));
  119           Autopilot_Start(&(localDW));
  120       }
  121       else {
  122           errorCode = XIL_INTERFACE_UNKNOWN_FCNID;
  123       }
  124       return errorCode;
  125   }
  126   
  127   XIL_INTERFACE_ERROR_CODE xilInitializeConditions(uint32_T xilFcnId) {
  128       XIL_INTERFACE_ERROR_CODE errorCode = XIL_INTERFACE_SUCCESS;
  129       /* Single In-the-Loop Component */
  130       if (xilFcnId == 0) {
  131           /* No Initialize Conditions Function to Call */
  132       }
  133       else {
  134           errorCode = XIL_INTERFACE_UNKNOWN_FCNID;
  135       }
  136       return errorCode;
  137   }
  138   
  139   XIL_INTERFACE_ERROR_CODE xilGetUIOData(uint32_T xilFcnId, XIL_COMMAND_TYPE_ENUM xilCommandType, uint32_T xilCommandIdx, XILIOData ** xilIOData) {
  140       XIL_INTERFACE_ERROR_CODE errorCode = XIL_INTERFACE_SUCCESS;
  141       *xilIOData = 0;
  142       /* Single In-the-Loop Component */
  143       if (xilFcnId != 0) {
  144          errorCode = XIL_INTERFACE_UNKNOWN_FCNID;
  145          return errorCode;
  146       }
  147       switch(xilCommandType) {
  148           case XIL_STEP_COMMAND: {
  149               static int initComplete = 0;
  150               if (!initComplete) {
  151                   uint32_T tableIdx = 0;
  152                   {
  153                       void * dataAddress = (void *) &(AirData.altRate);
  154                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  155                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  156                   }
  157                   {
  158                       void * dataAddress = (void *) &(AirData.alpha);
  159                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  160                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  161                   }
  162                   {
  163                       void * dataAddress = (void *) &(AirData.beta);
  164                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  165                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  166                   }
  167                   {
  168                       void * dataAddress = (void *) &(AirData.airspeed);
  169                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  170                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  171                   }
  172                   {
  173                       void * dataAddress = (void *) &(AirData.alt);
  174                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  175                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  176                   }
  177                   {
  178                       void * dataAddress = (void *) &(Inertial.phi);
  179                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  180                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  181                   }
  182                   {
  183                       void * dataAddress = (void *) &(Inertial.theta);
  184                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  185                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  186                   }
  187                   {
  188                       void * dataAddress = (void *) &(Inertial.psi);
  189                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  190                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  191                   }
  192                   {
  193                       void * dataAddress = (void *) &(Inertial.p);
  194                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  195                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  196                   }
  197                   {
  198                       void * dataAddress = (void *) &(Inertial.q);
  199                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  200                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  201                   }
  202                   {
  203                       void * dataAddress = (void *) &(Inertial.r);
  204                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  205                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  206                   }
  207                   {
  208                       void * dataAddress = (void *) &(APEng);
  209                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(boolean_T);
  210                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  211                   }
  212                   {
  213                       void * dataAddress = (void *) &(HDGMode);
  214                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(boolean_T);
  215                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  216                   }
  217                   {
  218                       void * dataAddress = (void *) &(ALTMode);
  219                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(boolean_T);
  220                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  221                   }
  222                   {
  223                       void * dataAddress = (void *) &(HDGRef);
  224                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  225                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  226                   }
  227                   {
  228                       void * dataAddress = (void *) &(TurnKnob);
  229                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  230                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  231                   }
  232                   {
  233                       void * dataAddress = (void *) &(ALTRef);
  234                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  235                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  236                   }
  237                   {
  238                       void * dataAddress = (void *) &(PitchWheel);
  239                       xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
  240                       xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
  241                   }
  242                   xil_fcnid0_task1_u[tableIdx].memUnitLength = 0;
  243                   xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) 0;
  244                   initComplete = 1;
  245               }
  246               *xilIOData = &xil_fcnid0_task1_u[0];
  247               break;
  248           }
  249           default:
  250              errorCode = XIL_INTERFACE_UNKNOWN_TID;
  251              break;
  252       }
  253       UNUSED_PARAMETER(xilCommandIdx);
  254       return errorCode;
  255   }
  256   
  257   XIL_INTERFACE_ERROR_CODE xilOutput(uint32_T xilFcnId, uint32_T xilTID) {
  258       /* Single In-the-Loop Component */
  259       if (xilFcnId != 0) {
  260          return XIL_INTERFACE_UNKNOWN_FCNID;
  261       }
  262       switch(xilTID) {
  263           case 1:
  264               Autopilot(&(AirData), &(Inertial), &(APEng), &(HDGMode), &(ALTMode), &(HDGRef), &(TurnKnob), &(ALTRef), &(PitchWheel), &(AileronCmd), &(ElevatorCmd), &(RudderCmd), &(localDW));
  265               break;
  266           default:
  267              return XIL_INTERFACE_UNKNOWN_TID;
  268       }
  269       return XIL_INTERFACE_SUCCESS;
  270   }
  271   
  272   XIL_INTERFACE_ERROR_CODE xilUpdate(uint32_T xilFcnId, uint32_T xilTID) {
  273       /* Single In-the-Loop Component */
  274       if (xilFcnId != 0) {
  275          return XIL_INTERFACE_UNKNOWN_FCNID;
  276       }
  277       /* No Update Function */
  278       UNUSED_PARAMETER(xilTID);
  279       return XIL_INTERFACE_SUCCESS;
  280   }
  281   
  282   XIL_INTERFACE_ERROR_CODE xilGetYIOData(uint32_T xilFcnId, XIL_COMMAND_TYPE_ENUM xilCommandType, uint32_T xilCommandIdx, XILIOData ** xilIOData) {
  283       XIL_INTERFACE_ERROR_CODE errorCode = XIL_INTERFACE_SUCCESS;
  284       /* Single In-the-Loop Component */
  285       *xilIOData = 0;
  286       if (xilFcnId != 0) {
  287          errorCode = XIL_INTERFACE_UNKNOWN_FCNID;
  288          return errorCode;
  289       }
  290       switch(xilCommandType) {
  291           case XIL_INITIALIZE_COMMAND: {
  292               static int initComplete = 0;
  293               if (!initComplete) {
  294                   uint32_T tableIdx = 0;
  295                   {
  296                       void * dataAddress = (void *) &(AileronCmd);
  297                       xil_fcnid0_init_y[tableIdx].memUnitLength = 1 * sizeof(real_T);
  298                       xil_fcnid0_init_y[tableIdx++].address = (MemUnit_T *) dataAddress;
  299                   }
  300                   {
  301                       void * dataAddress = (void *) &(ElevatorCmd);
  302                       xil_fcnid0_init_y[tableIdx].memUnitLength = 1 * sizeof(real_T);
  303                       xil_fcnid0_init_y[tableIdx++].address = (MemUnit_T *) dataAddress;
  304                   }
  305                   {
  306                       void * dataAddress = (void *) &(RudderCmd);
  307                       xil_fcnid0_init_y[tableIdx].memUnitLength = 1 * sizeof(real_T);
  308                       xil_fcnid0_init_y[tableIdx++].address = (MemUnit_T *) dataAddress;
  309                   }
  310                   xil_fcnid0_init_y[tableIdx].memUnitLength = 0;
  311                   xil_fcnid0_init_y[tableIdx++].address = (MemUnit_T *) 0;
  312                   initComplete = 1;
  313               }
  314               *xilIOData = &xil_fcnid0_init_y[0];
  315               break;
  316           }
  317           case XIL_STEP_COMMAND: {
  318               static int initComplete = 0;
  319               if (!initComplete) {
  320                   uint32_T tableIdx = 0;
  321                   {
  322                       void * dataAddress = (void *) &(AileronCmd);
  323                       xil_fcnid0_task1_y[tableIdx].memUnitLength = 1 * sizeof(real_T);
  324                       xil_fcnid0_task1_y[tableIdx++].address = (MemUnit_T *) dataAddress;
  325                   }
  326                   {
  327                       void * dataAddress = (void *) &(ElevatorCmd);
  328                       xil_fcnid0_task1_y[tableIdx].memUnitLength = 1 * sizeof(real_T);
  329                       xil_fcnid0_task1_y[tableIdx++].address = (MemUnit_T *) dataAddress;
  330                   }
  331                   {
  332                       void * dataAddress = (void *) &(RudderCmd);
  333                       xil_fcnid0_task1_y[tableIdx].memUnitLength = 1 * sizeof(real_T);
  334                       xil_fcnid0_task1_y[tableIdx++].address = (MemUnit_T *) dataAddress;
  335                   }
  336                   xil_fcnid0_task1_y[tableIdx].memUnitLength = 0;
  337                   xil_fcnid0_task1_y[tableIdx++].address = (MemUnit_T *) 0;
  338                   initComplete = 1;
  339               }
  340               *xilIOData = &xil_fcnid0_task1_y[0];
  341               break;
  342           }
  343           default:
  344              errorCode = XIL_INTERFACE_UNKNOWN_TID;
  345              break;
  346       }
  347       UNUSED_PARAMETER(xilCommandIdx);
  348       return errorCode;
  349   }
  350   
  351   XIL_INTERFACE_ERROR_CODE xilTerminate(uint32_T xilFcnId) {
  352      /* Single In-the-Loop Component */
  353      if (xilFcnId != 0) {
  354         return XIL_INTERFACE_UNKNOWN_FCNID;
  355      }
  356      /* No Terminate Function to Call */
  357   
  358      return XIL_INTERFACE_SUCCESS;
  359   }
  360   
  361   XIL_INTERFACE_ERROR_CODE xilEnable(uint32_T xilFcnId, uint32_T xilTID) {
  362       /* Single In-the-Loop Component */
  363       if (xilFcnId != 0) {
  364          return XIL_INTERFACE_UNKNOWN_FCNID;
  365       }
  366       UNUSED_PARAMETER(xilTID);
  367       /* No Enable Function - this function should never be called */
  368       return XIL_INTERFACE_UNKNOWN_TID;
  369   }
  370   
  371   XIL_INTERFACE_ERROR_CODE xilDisable(uint32_T xilFcnId, uint32_T xilTID) {
  372       /* Single In-the-Loop Component */
  373       if (xilFcnId != 0) {
  374          return XIL_INTERFACE_UNKNOWN_FCNID;
  375       }
  376       UNUSED_PARAMETER(xilTID);
  377       /* No Disable Function - this function should never be called */
  378       return XIL_INTERFACE_UNKNOWN_TID;
  379   }
  380   
  381